package com.frost.aop;

import com.frost.aop.component.Iface;
import com.frost.aop.component.UserComponent;
import com.frost.aop.component.UserComponent2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class SpringAop1Application {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(SpringAop1Application.class, args);
        // SpringBoot默认情况下，接口类和普通类都可以被正确代理，默认CGLIB代理
//        UserComponent bean = context.getBean(UserComponent.class);
//        System.out.println(bean.getClass().toString()); // CGLIB
//        UserComponent2 bean2 = (UserComponent2) context.getBean("userComponent2");
//        System.out.println(bean2.getClass().toString()); // CGLIB

        // 设置JDK代理
//        UserComponent bean = context.getBean(UserComponent.class);
//        System.out.println(bean.getClass().toString()); // JDK不能正常代理
        Iface bean = (Iface) context.getBean("userComponent");
        System.out.println(bean.getClass().toString()); // JDK
//        UserComponent2 bean2 = (UserComponent2) context.getBean("userComponent2");
//        System.out.println(bean2.getClass().toString()); // CGLIB
    }

}
